As defined in Helen Custer, INSIDE WINDOWS NT (Microsoft Press, 1993), pp. 285-326, which book is incorporated herein by reference in its entirety, a computer network is an interconnected collection of autonomous computers in which each computer is physically separate and runs its own operating system. The role of network software is to take a job request, usually an I/O request, from an application running on a network client, pass it to a network server, execute the request on the network server, and return the results to the network client. During these operations it will be appreciated that the network software is required to transform the request several times. For example, a high-level request such as "read x number of bytes from file y on an I/O device associated with network server z" requires the network software to determine how to get to network server z and what communication protocol network server z understands. Then the request must be altered for transmission across the network communications link and, when the request reaches network server z, it must be checked for completeness and compatibility, decoded, and sent to the correct operating system component to execute the request. Finally, the reply must be coded for sending back across the network communications link to the network client.
By way of example, the Windows NT brand operating system allows user-mode software running on a network client to request the performance of a job on a remote, compatible network server. Specifically, when the user-mode software, such as an I/O application programming interface (API), issues a remote I/O request by calling native I/O services, some initial processing is performed, the I/O manager creates an I/O request packet (IRP) and passes the request to one of its registered file system drivers, e.g. a redirector associated with a transport driver. The redirector and transport driver provide the facilities necessary for a client computer utilizing the Windows NT brand operating system to gain access via the network communications link to files, named pipes, printers, etc. associated with the compatible network server. Similarly, when a request arrives at a network server utilizing the Windows NT brand operating system from a remote, compatible network client, it is received by a server, similarly processed, and forwarded on to the appropriate job server which performs the requested job.
Unfortunately, in a distributed computer network where there are a variety of computers running a variety of operating systems each having a different set of APIs, protocols, device naming conventions, etc., incompatibilities abound. Accordingly, the various redirector, server, and transport drivers associated with the network client and server must be continually updated, i.e. loaded and unloaded, in order to establish a computer network model into which the various components may fit. Ensuring this required compatibility makes it difficult and costly to write network software especially when multiple different products from multiple different vendors are desired to work together.
In particular, with respect to network software for use in requesting printing jobs, when a network client wants to send a print job to a remote printer server, it has to use the printing APIs of a particular computer network protocol that the printer server supports. Since different operating systems often use different computer network protocols and different naming conventions, a print job request issued by a network client utilizing a first operating system cannot be forwarded to a printer server associated with a network server utilizing a different operating system unless the network client has installed thereon software which functions to overcome the noted incompatibilities. Likewise, printer administration tools will only work in connection with the one operating system they were designed for thereby requiring vendors to write specialized, standalone software applications which may be used to allow administrators to manage the printers/printer servers over the computer network. Furthermore, these specialized software applications have to be installed on every network client which the system administrator may desire to use to perform system administration.
From the foregoing, it is evident that a need exists for an improved computer network which generally allows network software to be easily written for network clients and network servers utilizing different operating systems. A related need also exists for such a computer network which eliminates the need to install any specialized administration tools on the client side of the computer network. For example, it would be desirous to provide a computer network which allows network software to be platform independent and, similarly, which allows vendors to write server side administration tools which can be managed from any network client without regard to operating system incompatibilities.